package main

import (
	"fmt"

	"github.com/olivere/elastic/v7"
)

var client *elastic.Client

func initElasticsearchClient(host string, port string) {
	var err error
	client, err = elastic.NewClient(
		elastic.SetURL(fmt.Sprintf("http://%s:%s", "localhost", "9200")),
		elastic.SetMaxRetries(3),
	)
	if err != nil {
		panic(err)
	}
}

func insertDocument(db string, table string, obj map[string]interface{}) {
	id := obj["id"]
	var indexName, typeName string
	// 注意数据库中 database/table 的概念，可以映射到 es 的 index 和 type
	// 不过需要注意， 因为 es 中的——type 本质上只是 document 的一个字段
	// 所以单个 index 内容过多会导致新能问题
	// 在新版本中 type 已经废弃
	// 为了让不同表的数据入不同的 index，这里我们 table+name 作为 index 的名字
	// 正常情况
	res, err := client.Index().Index(indexName).Type(typeName).Id(id).BodyJson(obj).Do()
	if err != nil {
		// handle error
	} else {
		// insert success
	}

}
